package com.simple.core;

import java.util.List;

/**
 * 这是一个观察者接口，它定义了一个观察者应该拥有的最基础的行为。
 */
public interface Receiver {

    /**
     * 添加观察的动作，允许添加多个观察动作
     *
     * @param action
     */
    void addAction(String action);

    /**
     * 接收并且处理事件
     *
     * @param carrier 传递数据的对象
     * @param <T>     返回结果的数据类型
     * @return 如果处理完，想要将处理结果返回给事件发生者，可以直接返回
     */
    <T> T receive(Carrier carrier);

    /**
     * 向事件中心注册观察者
     */
    void register();

    /**
     * 查看观察者有多少观察的动作
     *
     * @return 观察的动作
     */
    List<String> getActions();
}
